// pages/login/login.js
const request = require('../../utils/request.js');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    isLogin: true, // 是否为登录模式，true为登录，false为注册
    username: "",
    password: "",
    confirmPassword: "", // 注册时的确认密码
    loading: false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 如果传入了mode参数，设置登录或注册模式
    if (options.mode) {
      this.setData({
        isLogin: options.mode === "login",
      });
    }
  },

  /**
   * 切换登录/注册模式
   */
  switchMode() {
    this.setData({
      isLogin: !this.data.isLogin,
      username: "",
      password: "",
      confirmPassword: "",
    });
  },

  /**
   * 输入用户名
   */
  onUsernameInput(e) {
    this.setData({
      username: e.detail.value,
    });
  },

  /**
   * 输入密码
   */
  onPasswordInput(e) {
    this.setData({
      password: e.detail.value,
    });
  },

  /**
   * 输入确认密码
   */
  onConfirmPasswordInput(e) {
    this.setData({
      confirmPassword: e.detail.value,
    });
  },

  /**
   * 表单验证
   */
  validateForm() {
    const { username, password, confirmPassword, isLogin } = this.data;

    if (!username.trim()) {
      wx.showToast({
        title: "请输入用户名",
        icon: "none",
      });
      return false;
    }

    if (!password.trim()) {
      wx.showToast({
        title: "请输入密码",
        icon: "none",
      });
      return false;
    }

    if (password.length < 6) {
      wx.showToast({
        title: "密码至少6位",
        icon: "none",
      });
      return false;
    }

    // 注册模式下验证确认密码
    if (!isLogin) {
      if (!confirmPassword.trim()) {
        wx.showToast({
          title: "请输入确认密码",
          icon: "none",
        });
        return false;
      }

      if (password !== confirmPassword) {
        wx.showToast({
          title: "两次密码不一致",
          icon: "none",
        });
        return false;
      }
    }

    return true;
  },

  /**
   * 登录处理
   */
  handleLogin() {
    const { username, password } = this.data;

    this.setData({ loading: true });

    // 使用统一的请求工具进行登录
    request.post('/user/login', {
      username: username,
      password: password
    }, {
      needAuth: false // 登录接口不需要token
    }).then((res) => {
      console.log('登录成功，API返回数据:', res);
      
      // 登录成功，保存token信息到本地存储
      wx.setStorageSync("refreshToken", res.data?.refreshToken || res.refreshToken);
      wx.setStorageSync("token", res.data?.token || res.token);
      wx.setStorageSync("userid", res.data?.userid || res.userid);
      
      console.log('保存的token:', res.data?.token || res.token);
      console.log('保存的userid:', res.data?.userid || res.userid);
      
      wx.showToast({
        title: res.message || '登录成功',
        icon: "success",
      });
      
      // 延迟返回上一页
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
    }).catch((err) => {
      console.error('登录失败:', err);
      // 错误处理已在request工具中统一处理
    }).finally(() => {
      this.setData({ loading: false });
    });
  },

  /**
   * 注册处理
   */
  handleRegister() {
    const { username, password } = this.data;
    
    this.setData({ loading: true });
    
    // 使用统一的请求工具进行注册
    request.post('/user/reg', {
      username: username,
      password: password
    }, {
      needAuth: false // 注册接口不需要token
    }).then((res) => {
      console.log('注册成功，API返回数据:', res);
      
      wx.showToast({
        title: res.message || '注册成功',
        icon: "success",
      });
      
      // 保存登录状态到本地存储（如果注册后自动登录）
      if (res.data && res.data.token) {
        wx.setStorageSync('refreshToken', res.data?.refreshToken || res.refreshToken);
        wx.setStorageSync('token', res.data?.token || res.token);
        wx.setStorageSync('userid', res.data?.userid || res.userid);
        
        console.log('注册成功，保存的token信息');
      }
      
      // 注册成功后延迟返回上一页
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
    }).catch((err) => {
      console.error('注册失败:', err);
      // 错误处理已在request工具中统一处理
    }).finally(() => {
      this.setData({ loading: false });
    });
  },

  /**
   * 提交表单
   */
  onSubmit() {
    if (!this.validateForm()) {
      return;
    }

    if (this.data.isLogin) {
      this.handleLogin();
    } else {
      this.handleRegister();
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
});
